<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of persistenciaCliente
 *
 * @author Agustin
 */
class PersistenciaCliente {

    private static $instancia;

    public static function getInstance() {
        if (!self::$instancia instanceof self) {
            self::$instancia = new self;
        }
        return self::$instancia;
    }

    protected function buscarClienteNombre($nombre) {
        require_once 'conexion.php';
        $db = conexion::getInstance();
        try {
            $db->conectar();
            $resultado = $db->consulta('select * from clientes where nombre = "' . $nombre . '";');
            $usuario = $db->contarFilas($resultado);
            $arrayres = $db->arrayResultado($resultado);
            if ($usuario > 0) {
                return $arrayres;
            } else {
                return 'No existe ese cliente.';
            }
        } catch (Exception $ex) {
            throw new Exception('Error en la conexión con la base de datos.');
        }
    }

    protected function buscarClienteId($id) {
        require_once 'conexion.php';
        $db = conexion::getInstance();
        try {
            $db->conectar();
            $resultado = $db->consulta('select * from cliente where id = ' . $id . ';');
            $usuario = mysql_num_rows($resultado);
            if ($usuario > 0) {
                return $resultado;
            } else {
                return 'No existe ese cliente.';
            }
        } catch (Exception $ex) {
            throw new Exception('Error en la conexión con la base de datos.');
        }
    }

    protected function agregarCliente($nombre, $responsable) {
        try {
            require_once 'conexion.php';
            $db = conexion::getInstance();
            $db->conectar();
            $consulta = 'insert into clientes (nombre, responsable) values ("' . $nombre . '","' . $responsable . '");';
            $db->consulta($consulta);
            return true;
        } catch (Exception $ex) {
            throw new Exception('Error en la conexión con la base de datos.');
        }
    }

    protected function actualizarCliente($id, $nombre, $responsable) {
        try {
            require_once 'conexion.php';
            $db = conexion::getInstance();
            $db->conectar();
            $consulta = 'update clientes set nombre="' . $nombre . '", responsable="' . $responsable . '" where idcliente=' . $id;
            $db->consulta($consulta);
            return $var = 1;
        } catch (Exception $ex) {
            throw new Exception('Error en la conexión con la base de datos.');
        }
    }

    public function agenda($datos) {
        try {
            require_once 'conexion.php';
            $db = conexion::getInstance();
            $db->conectar();
            if ($datos[0] == 'true') {
                $consulta = "select aux3.nombre,aux3.responsable,aux2.nombrelugar,aux2.direccion,aux2.tipo,aux2.mail,aux2.numero from (select distinct idCliente,nombre,responsable from (select clientes.idCliente,concat(nombre,' ',apellido) as nombre,responsable from clientes inner join (select apellido,clientesparticulares.idCliente from clientesparticulares) as cp where clientes.idCliente=cp.idCliente) as aux union select idCliente, nombre,responsable from clientes where idCliente not in (select clientes.idCliente from clientes inner join (select apellido,clientesparticulares.idCliente from clientesparticulares) as cp where clientes.idCliente=cp.idCliente) order by nombre) as aux3 inner join (select aux1.idCliente,aux1.nombreLugar,aux1.direccion,aux1.tipo,aux1.responsable,aux1.mail,telefonos.numero from (select lugares.idCliente,lugares.nombreLugar,lugares.direccion,lugares.tipo,lugares.responsable, lugares.mail,lugarestelefonos.idtelefono from lugares inner join lugarestelefonos on lugares.idlugar = lugarestelefonos.idlugar) as aux1 inner join telefonos on telefonos.idtelefono=aux1.idtelefono)as aux2 on aux3.idCliente=aux2.idcliente where aux3.nombre LIKE '" . $datos[1] . "%'";
            } else {
                $consulta = "select aux3.nombre,aux3.responsable,aux2.nombrelugar,aux2.direccion,aux2.tipo,aux2.mail,aux2.numero from (select distinct idCliente,nombre,responsable from (select clientes.idCliente,concat(nombre,' ',apellido) as nombre,responsable from clientes inner join (select apellido,clientesparticulares.idCliente from clientesparticulares) as cp where clientes.idCliente=cp.idCliente) as aux union select idCliente, nombre,responsable from clientes where idCliente not in (select clientes.idCliente from clientes inner join (select apellido,clientesparticulares.idCliente from clientesparticulares) as cp where clientes.idCliente=cp.idCliente) order by nombre) as aux3 inner join (select aux1.idCliente,aux1.nombreLugar,aux1.direccion,aux1.tipo,aux1.responsable,aux1.mail,telefonos.numero from (select lugares.idCliente,lugares.nombreLugar,lugares.direccion,lugares.tipo,lugares.responsable, lugares.mail,lugarestelefonos.idtelefono from lugares inner join lugarestelefonos on lugares.idlugar = lugarestelefonos.idlugar) as aux1 inner join telefonos on telefonos.idtelefono=aux1.idtelefono)as aux2 on aux3.idCliente=aux2.idcliente where aux2.nombrelugar LIKE '" . $datos[1] . "%'";
            }
            return $db->consulta($consulta);
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    public function traerClientes($aux) {
        try {
            require_once 'conexion.php';
            require_once 'cliente.php';
            $db = conexion::getInstance();
            $db->conectar();
            if ($aux == "part") {
                $consulta = "select clientes.idCliente,concat(nombre,' ',apellido) as nombre,responsable from clientes inner join (select apellido,(clientesparticulares.idCliente) as id from clientesparticulares) as cp where cp.id=clientes.idCliente order by nombre  ";
            } elseif ($aux == "admin") {
                $consulta = "select distinct clientes.idcliente,nombre,responsable from clientes inner join clientesadministraciones where clientes.idcliente=clientesadministraciones.idcliente order by nombre ";
            } else if ($aux == "") {
                $consulta = "select distinct idCliente,nombre,responsable from (select clientes.idCliente,concat(nombre,' ',apellido) as nombre,responsable from clientes inner join (select apellido,clientesparticulares.idCliente from clientesparticulares) as cp where clientes.idCliente=cp.idCliente) as aux union select idCliente, nombre,responsable from clientes where idCliente not in (select clientes.idCliente from clientes inner join (select apellido,clientesparticulares.idCliente from clientesparticulares) as cp where clientes.idCliente=cp.idCliente) order by nombre";
            } else {
                $consulta = "select * from (select distinct idCliente,nombre,responsable from (select clientes.idCliente,concat(nombre,' ',apellido) as nombre,responsable from clientes inner join (select apellido,clientesparticulares.idCliente from clientesparticulares) as cp where clientes.idCliente=cp.idCliente) as aux union select idCliente, nombre,responsable from clientes where idCliente not in (select clientes.idCliente from clientes inner join (select apellido,clientesparticulares.idCliente from clientesparticulares) as cp where clientes.idCliente=cp.idCliente)) as aux where idcliente=" . $aux . " order by nombre";
            }

            $clientes = array();
            $aux = $db->consulta($consulta);

            foreach ($aux as $cliente) {
                $client = new Cliente(null);
                $client->id = $cliente[0];
                $client->nombre = $cliente[1];
                $client->responsable = $cliente[2];
                array_push($clientes, $client);
            }
            return $clientes;
        } catch (Exception $ex) {
            throw new Exception('Error en la conexión con la base de datos.');
        }
    }

    public function partadmin($id) {
        try {
            require_once 'conexion.php';
            require_once 'cliente.php';
            $db = conexion::getInstance();
            $db->conectar();
            $consulta = "select idcliente from clientesadministraciones where idcliente=" . $id;
            if (count($db->consulta($consulta)) > 0) {
                return 1;
            } else {
                return 0;
            }
        } catch (Exception $ex) {
            throw new Exception('Error en la conexión con la base de datos.');
        }
    }

}

?>
